package org.hank.demoproject.room

import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.hank.demoproject.MyApplication
import org.hank.roomdemo.UserInfo

//  ┏┓　　　┏┓
//┏┛┻━━━┛┻┓
//┃　　　　　　　┃
//┃　　　━　　　┃
//┃　┳┛　┗┳　┃
//┃　　　　　　　┃
//┃　　　┻　　　┃
//┃　　　　　　　┃
//┗━┓　　　┏━┛
//    ┃　　　┃                  神兽保佑
//    ┃　　　┃                  永无BUG！
//    ┃　　　┗━━━┓
//    ┃　　　　　　　┣┓
//    ┃　　　　　　　┏┛
//    ┗┓┓┏━┳┓┏┛
//      ┃┫┫　┃┫┫
//      ┗┻┛　┗┻┛
/**
 *@auth: Hank
 *邮箱: cs16xiaoc1@163.com
 *创建时间: 2021/4/29 11:13
 *描述:
 */
class RoomViewModel : ViewModel() {
    lateinit var db: MyRoomDataBase
    var userList = MutableLiveData<MutableList<UserInfo>>()

    init {
        userList.value = ArrayList()
    }

    fun insert(vararg userInfo: UserInfo?) {
        viewModelScope.launch(Dispatchers.IO) {
            db = MyRoomDataBase.getInstance(MyApplication.context)
            var ret = db.rooDao().insert(*userInfo)
            if (ret != null) {
                query()
            }
        }

    }

    fun del(userinfo: UserInfo?) {
        viewModelScope.launch(Dispatchers.IO) {
            db = MyRoomDataBase.getInstance(MyApplication.context)
            var ret = db.rooDao().del(userinfo)
            if (ret != -1) {
                query()
            }
        }
    }

    fun update(vararg userInfo: UserInfo?) {
        viewModelScope.launch(Dispatchers.IO) {
            db = MyRoomDataBase.getInstance(MyApplication.context)
            var ret = db.rooDao().update(*userInfo)
            if (ret != null) {
                query()
            }
        }
    }

    fun query() {
        viewModelScope.launch(Dispatchers.IO) {
            db = MyRoomDataBase.getInstance(MyApplication.context)
            var list = db.rooDao().allUserInfo
            withContext(Dispatchers.Main) {
                userList.value = list
            }
        }
    }
}